DAL Delete methode
Eén rij uit de tabel verwijderen
Probleem
We hebben de id van de te deleted rij nodig om de te deleten rij in de tabel op te zoeken.
We willen feedback geven aan de gebruiker over de delete. Er zijn drie toestanden die we in de gaten moeten houden:
- database foutmelding
- sql foutmelding
- delete is gelukt
Design
We gebruiken een try catch om feedback te geven op systeemfouten en SQL server fouten. We interpreteren de retourwaarde van de ExecuteNonQuery methode. Als parameter geven we een BBL object mee. In ASP.NET MVC is dat vaak het model. Als de Id niet bestaat zal SQL een 0 waarde retourneren.
Oplossing
public int Delete()
{
SqlConnection connection = new SqlConnection();
connection.ConnectionString = ConfigurationManager.
ConnectionStrings["WebwinkelWindowsAuthentication"].ToString();
SqlCommand command = new SqlCommand();
// in de CommandText eigenschap stoppen de naam
// van de stored procedure
string sqlString = "OrderStatusDelete";
//we use here a getter method to obtain the value to be saved,
command.Parameters.Add(new SqlParameter("@Id", SqlDbType.Int)).Value = Model.Id;
// zeg aan het command object dat het een stored procedure
// zal krijgen en geen SQL Statement
command.CommandType = CommandType.StoredProcedure;
// stop het sql statement in het command object
command.CommandText = sqlString;
// geeft het connection object door aan het command object
command.Connection = connection;
this.message = "Niets te melden";
// we gaan ervan uit dat het mislukt
int result = 0;
using (connection)
{
try
{
connection.Open();
//Verbinding geslaagd
result = command.ExecuteNonQuery();
// we moeten kijken naar de return van ExecuteNonQuery
// retourneert het aantal rijen dat gedeleted is
if (result == 0)
{
this.message = " OrderStatus is niet gedeleted.";
}
else
{
this.message = " OrderStatus is gedeleted.";
}
}
catch (SqlException e)
{
this.message = e.Message;
}
}
return result;
}
2017-01-21 16:25:24